package j.util.pkgenerator;

import java.util.Date;

/**
 * User: jason
 * Date: 13-4-18 上午10:38
 */
public interface PkGeneratorService {

    /**
     * 从配置文件中获取将要产生的下一个计数的开始值与最大值，
     * 如果根据天来重新计数，则判断配置中的日期与当前日期是否为同一天，不为同一天，则重新计数
     * @param key 配置文件中的唯一值
     * @return
     */
    NextValue generateNextValueByKey(String key);

    /**
     * 产生类型为数字整形的主键值
     * @param key
     * @return
     */
    int generatePrimaryKeyForInt(String key);

    /**
     * 产生类型为字符的主键值，需要指定前辍，若前辍为空或null，则仅以数字为字符类型的主键
     * @param prifix 前辍，可以为空
     * @param index 序列值
     * @return
     */
    String generatePrimaryKey(String prifix, int length, String format, int index);

    /**
     * 更新指定key的计数器为genValue，同时更新上次获取日期
     * @param key
     */
    int getAndUpdateGenValue(String key, Date lastRetriveDate);
}
